home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Musik / Misc / Amster / Source / include / transfer.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-27  |  2.4 KB  |  121 lines

  1. /*
  2. ** Transfer Header
  3. */
  4.  
  5. #include <sys/types.h>
  6. #include <libraries/dos.h>
  7.  
  8. #include <time.h>
  9. #include <netinet/in.h>
  10.  
  11. #include "include/napster.h"
  12. #include "include/thread.h"
  13. #include "include/download.h"
  14.  
  15. #ifndef AMSTER_TRANSFER_H
  16. #define AMSTER_TRANSFER_H
  17.  
  18. struct TransferData {
  19.     struct MUI_InputHandlerNode ihnode;
  20.     struct MUI_InputHandlerNode waitnode;
  21.     u_long *list;
  22.     u_long *info;
  23. };
  24.  
  25. /* Download states
  26.    - IMPORTANT: These states MUST be in the same order as the
  27.      catalog string array in transfer.c
  28. */
  29. enum TransferState {
  30.     DLS_PREP,
  31.     DLS_QUEUE,
  32.     DLS_WAIT,
  33.     DLS_CON,
  34.     DLS_REQ,
  35.     DLS_INIT,
  36.     DLS_DOWN,
  37.     DLS_UP,
  38.     DLS_FIN,
  39.     DLS_ABORT,
  40.     DLS_ERROR
  41. };
  42.  
  43. /* Transfer errors
  44.    - IMPORTANT: These errors MUST be in the same order as the
  45.      catalog string array in transfer.c
  46. */
  47. enum TransferError {
  48.     ERROR_UNKNOWN,
  49.     ERROR_FILEOPEN,
  50.     ERROR_FILEREAD,
  51.     ERROR_FILEWRITE,
  52.     ERROR_NET,
  53.     ERROR_LOGGEDOUT,
  54.     ERROR_NOTFOUND,
  55.     ERROR_INVALIDREQUEST,
  56.     ERROR_TEASER,
  57.     ERROR_BUSY,
  58.     ERROR_OUTOFBOUND
  59. };
  60.  
  61. enum NetError {
  62.     ERROR_NET_TIMEOUT,
  63.     ERROR_NET_REFUSED,
  64.     ERROR_NET_RESET,
  65.     ERROR_NET_PIPE
  66. };
  67.  
  68. enum TransferType {
  69.     TYPE_DOWNLOAD_IN,
  70.     TYPE_DOWNLOAD_OUT,
  71.     TYPE_UPLOAD_IN,
  72.     TYPE_UPLOAD_OUT
  73. };
  74.  
  75. typedef struct songtrans_struct {
  76.     struct songtrans_struct *next;
  77.     song song;
  78.     char *mynick;
  79.     u_long ip;
  80.     char host[512];
  81.     int port;
  82.     char *fname;
  83.     u_long size, cur, resumestart;
  84.     enum TransferType type;
  85.     enum TransferState state;
  86.     enum TransferError error;
  87.     int ErrorCode;
  88.     int RetryCount;
  89.     thread t;
  90.     int ts;
  91.     int cps, stalltick;
  92.     u_long oldsize;
  93.     time_t starttime, transtime, timeleft;
  94.  
  95.     /* thread data */
  96.     struct Library *DosBase;
  97.     struct Library *SocketBase;
  98.     long s;
  99.     char *buffer;
  100.     BPTR f;
  101.     u_long nsig,nsigm,msigm;
  102.     struct sockaddr_in sin;
  103.     struct fd_set fds;
  104.     struct timeval tv;
  105. } *songtrans, _songtrans;
  106.  
  107.  
  108. extern ULONG dl_setup(struct IClass *cl, Object *obj, Msg msg);
  109. extern ULONG dl_muicleanup(struct IClass *cl, Object *obj, Msg msg);
  110. extern MUIF translistdisp(REG(a2) char **array, REG(a1) songtrans sd);
  111. extern void CalculateCps(songtrans sd);
  112. extern void TransferSetError(struct TransferData *data, char *title, char *user, int error);
  113. extern void TransferInfo(struct TransferData *data);
  114. extern void TransferCleanup(struct TransferData *data);
  115. extern void TransferHandleError(songtrans sd);
  116. extern BOOL InitTransferThread(thread t, songtrans sd);
  117. extern void ExitTransferThread(songtrans sd, int ret);
  118.  
  119.  
  120. #endif    /* AMSTER_TRANSFER_H */
  121.